<?php
namespace app\admin\controller;

use think\Controller;
use think\Db;
use Workerman\Events\Select;
use think\Loader;
use think\Session;

/**
 *
 * @author 时
 *         专门用来测试model的控制器
 *        
 */
class Model extends Controller
{

    private $admin_id;

    public function index()
    {
        
        // 第一个使用Db 第二使用db 第三使用model
        // 需求就是查出这个用户拥有哪些权限
        // 第一个根据用户查询出 admin admin-role 有多少个角色 ids
        // 然后再根据 role-method 查询出这个ids 对应的权限id
        // 然后根据id 进行查询method 表进行查出这个用户的相应的信息
        // 1.查询出这个用户的信息
        $admin_id = 13;
        $GLOBALS['admin_id'] = $admin_id;
        
        $this->admin_id = $admin_id;
        $admin_info = Db::table('zx_admin')->where('admin_id', $admin_id)->find();
        // 页面取出相关的信息
        // $role_idQuery=Db::table('zx_admin_role')->field('role_id')->where('admin_id',$admin_id)->buildSql();
        // 可以查询出这个用户角色的信息
        $role_info = Db::table('zx_role')->field(array(
            'role_name',
            'role_intro'
        ))
            ->where('id', 'IN', function ($query) {
            $query->table('zx_admin_role')
                ->field('role_id')
                ->where('admin_id', $this->admin_id);
        })
            ->select();
        // 查询出用户的权限
        $zu = Db::table('zx_method')->field('name')
            ->where('id', 'IN', function ($query) {
            $query->table('zx_role_method')
                ->field('node_id')
                ->where('role_id', 'IN', function ($s) {
                $s->table('zx_admin_role')
                    ->field('role_id')
                    ->where('admin_id', $GLOBALS['admin_id']);
            });
        })
            ->buildSql();
        var_dump($zu);
    }

    public function admin_role()
    {
        // 这里就是进行查询出所有的管理员的
        $res = Db::view('Admin', 'admin_id,username')->view('AdminRole', 'role_id', 'AdminRole.admin_id=Admin.admin_id', 'LEFT')
            ->view('Role', 'role_name', 'Role.id=AdminRole.role_id', 'LEFT')
            ->select();
        var_dump($res);
    }

    public function test()
    {
        return view('index');
    }

    public function re()
    {
        // var_dump($_POST);
        // 表单验证器进行__token__
        $validate = Loader::validate('Model');
        if (! $validate->check($_POST)) {
            dump($validate->getError());
        }
        //
        $server_token = Session::get('__token__');
        $client_token = input('post.__token__');
        if ($client_token === $server_token) {
            // 第一次验证过后进行
            session('__token__', null);
            $data = array(
                'name' => rand(1, 1000)
            );
            $id = Db::table('test')->insertGetId($data);
            if ($id > 0) {
                var_dump('添加成cg');
            } else {
                $this->error('添加失败');
      }
     
  }else {
      die("请勿重复提交表单");
  }
    }
}
